package day0211;

import java.util.Arrays;

public class Test7 {
    /*public static void main(String[] args) {
        int[] a = { 11, 25, 3, 40, 15 };
        char   order='D';
        //String order="Desc";  //Desc 降序  //Asc 升序
        //定义方法。 使用a和order对a数组按照order的次序排序。
        sort(a,order);
        System.out.println(Arrays.toString(a));//打印排序的结果。
    }

    static  void  sort(int[] a2, char order){
        for (int i = 0; i < a2.length; i++) {//升序
            for (int j = i + 1; j < a2.length; j++) {
                if (a2[i] > a2[j] && order == 'A') {
                    int temp = a2[i];
                    a2[i] = a2[j];
                    a2[j] = temp;
                }else if(a2[i] < a2[j] && order == 'D'){
                    int temp = a2[i];
                    a2[i] = a2[j];
                    a2[j] = temp;
                }
            }
        }
    }*/


    public static void main(String[] args) {
        int[] a = { 11, 25, 3, 40, 15 };
        int   findEle=41;
        int result=Test7.find2(a,findEle);
        System.out.println(result==-1?"没找到":"找到了");
    }

    static int find2(int[] a1,  int   target){
        //int index=-1;
        //查找的代码，从a1数组中找到了findEle1就修改index的值
        Arrays.sort(a1);//一.对数组先排序
        int left=0;//left:表示查找区域的左边界的下标
        int right=a1.length-1;//right:表示查找区域的右边界的下标
        int middle=left+(right-left)/2;//middle:表示查找区域的中间位置的下标
        for(;left<=right;){//二.从一个区域找目标元素的的前提是  坐标的序号需要<=有边界的序号
            if(target ==a1[middle]){//三.每次查找： 看中间元素 == target的值
                return middle;      //如果不相等就修改查找范围，重新计算middle
            }else if(target >a1[middle]){
                left=middle+1;//修改left变量的值
                middle=left+(right-left)/2;//middle变量的值= 重新计算的值;
            }else{//如果target < 中间元素
                right=middle-1;//修改right变量的值
                middle=left+(right-left)/2;//middle变量的值= 重新计算的值;
            }
        }
        return -1;
    }

    static int find(int[] a1 ,int   findEle1){
        for (int i = 0; i < a1.length; i++) {
            if(  a1[i]  ==  findEle1){
                return i;
            }
        }
        return -1;
    }











}
